{{tag>Xenial matériel audio}}
----

======Sortie de son via HDMI====== 

Il peut arriver que pour certaines personnes, le branchement d'une sortie HDMI (télévision, moniteur supplémentaire, ...) entraîne bien la diffusion de l'image mais pas celle du son, ce qui s'avère très rapidement handicapant.
Cette page devrait vous aider à résoudre le problème.

===== Identifier sa carte graphique et son pilote =====

 Avant de continuer plus loin, il peut être intéressant de connaître sa carte graphique. Nvidia + model ou ATI radeon + model.
Pour connaître les caractéristiques de la carte graphique, vous pouvez utiliser depuis un [[:terminal]] l'une des [[:commande_shell|commandes]] suivantes :
  * <code>lspci | grep "VGA compatible controller"</code>
  * <code>lshw -enable pci -class display</code>
maintenant que vous connaissez le fabriquant et le modèle et le pilote installé il va falloir vérifier si vous avez le bon pilote en vous appuyant sur la page << [[carte_graphique|Les cartes graphiques]]>> et aller sur nvidia ou ati en installation via le site officiel.
  * [[http://www.nvidia.fr/Download/index.aspx?lang=fr|Site nvidia]]
  * [[http://support.amd.com/fr-fr/download/linux|Site ATI]]

Si tous est ok il vous reste à rediriger le bon périphérique

<note warning> Pour les possesseurs de carte ATI, il est probable que la sortie soit désactivée par défaut, voir [[http://forum.ubuntu-fr.org/viewtopic.php?id=722991|ce sujet]]. Pour l'activer, il faut modifier [[:grub-pc]]. Avec les [[:sudo| droits d'administration]], [[:tutoriel:comment_modifier_un_fichier|modifiez dans le fichier]] **/etc/default/grub** la ligne 
<file>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"</file> en<file>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.audio=1"</file>
puis pour prendre en compte la modification 
<code>sudo update-grub</code>
Et redémarrer.</note>

===== Pré-requis =====

  * Disposer des [[:sudo|droits d'administration]].
  * Disposer d'une connexion Internet configurée et activée.
  * Avoir mis à jour votre version d'Ubuntu
  * Avoir installé les pilotes pour ceux qui possèdent des carte graphiques [[:NVidia]] ou [[:ATI]]. L'installation de ces pilotes est requise pour avoir une maîtrise optimale de votre carte graphique par laquelle passera le son de la carte audio pour arriver à la sortie HDMI. Les utilisateurs de cartes Intel peuvent se diriger vers [[:intel_graphics|la page de documentation Intel Graphics]]
  * Avoir [[:tutoriel:comment_installer_un_paquet|installé les paquets]] **[[apt>asoundconf-gtk,gnome-alsamixer,alsa-utils|asoundconf-gtk gnome-alsamixer et alsa-utils]]**.

===== Installation =====

[[:tutoriel:comment_installer_un_paquet|Installez les paquet]] **[[apt>libasound2-plugins,"pulseaudio-*",paman,pavucontrol,paprefs,pavumeter|libasound2-plugins "pulseaudio-*" paman pavucontrol paprefs pavumeter]]**
===== Configuration =====

  - Tout d'abord, choisissons la bonne carte son dans le Sélecteur de systèmes multimédia. Ouvrez un [[terminal]] ou faites Alt+F2, puis saisissez la commande suivante :<code>gstreamer-properties</code>
  - Sous l'onglet Audio, sélectionnez le greffon //ALSA-Advanced Linux Sound Architecture// pour la sortie et l'entrée par défaut.
  - Ensuite sélectionnez:
      - le bon périphérique de sortie "HDMI" et testez le pipeline pour vérifier que le son soit bien opérationnel (FIXME //et pour ceux dont le pipeline ne donne rien ? :/)//.
      - le bon périphérique d'entrée si vous disposez d'une webcam. Puis fermez.
  - Dans un [[:terminal]] entrez <code>gnome-alsamixer</code> 
      - vérifier que le son n'est pas sur "muet". 
      - Activez bien tous les sons de sortie.
  - toujours dans un [[:terminal]] <code>gnome-volume-control</code>
  - Assurez vous d'avoir bien choisi le bon périphérique d'entrée et sortie. 
 
Puis redémarrez et le son fonctionnera.

<note tip>En cas de souci, essayez la commande <code>sudo alsa force-reload</code></note>

<note tip>pour **Xubuntu [[:16.04]]**, après avoir lancé les paramètres sonores (dans l’icône du son) ou la commande ''pavucontrol'' dans un terminal, aller dans l'onglet "configuration" puis sélectionner une sortie HDMI </note>

===== Utilisation =====

Voici les commandes les plus demandées pour que l'on vous aider en cas de soucis sur le forum.

^commande^description^
|<code>alsamixer</code>| Sert à avoir une interface de gestion du système de son dans le terminal pour régler les cartes son trouvées.|
|<code>aplay -l</code>| Sert à montrer les noms des cartes son reconnues, leurs numéros de périphériques et sous périphériques, ainsi que le nombre total de périphériques connectés.|
|<code>cat /proc/asound/cards</code>| Sert aussi à montrer ses cartes son mais sans les sous-périphériques.|
|<code>lsmod | grep snd</code>| Sert à voir si le son du périphérique sélectionné marche correctement.|
|<code>sudo alsa force-reload</code>| Sert à forcer alsa à redémarrer pour charger les périphériques et les nouveaux réglages.|
|<code>gstreamer-properties</code>| Sert à ouvrir une interface graphique pour paramétrer et tester les sorties/entrées audio et vidéo. Vous pourrez également choisir ici le greffon que vous voulez utiliser, pour le cas présent ce sera alsa architecture.|
|<code>sudo dpkg-reconfigure linux-sound-base</code>| sert à choisir le greffon à utiliser. Pour le cas présent ce sera alsa.|
|<code>lspci | grep -i audio</code>| Sert à détailler vos deux cartes son, leur ordre, et numéro "ICH"|
|<code>lspci</code>| Sert à voir tout le matériel connecté à l'ordinateur et leur chemin.|
|<code>pavucontrol</code>| Sert à démarrer un gestionnaire de son pulse audio pour activer les périphériques ou les désactiver par interface graphique. Très utile.|
|<code>gnome-alsamixer</code>| Ceci est une interface graphique très proche de l'interface par commande de "alsamixer".|
|<code>asoundconf-gtk</code>| Permet de sélectionner la carte son voulue.|
|<code>gnome-volume-control</code>| Permet de modifier le volume des événements sonores ainsi que de choisir le bon périphérique.|

===== Problèmes connus=====


==== Le son peut être reconnu mais pas redirigé vers le bon périphérique de sortie de la carte NVidia ====

Pour trouver le bon périphérique, voici quelques pistes ( à suivre avec l'écran / la TV branché en HDMI, et l'affichage basculé avec twinview le cas échéant)

Dans ce cas ouvrez un terminal et tapez cette commande :
<code>aplay -D plughw:2,9 /usr/share/sounds/alsa/Front_Center.wav</code>

Si cette commande vous retourne une erreur de type :
<code>aplay: main:654: Erreur d'ouverture audio: Aucun fichier ou dossier de ce type</code>

changez dans la commande en question les chiffres ''2,9'' par ceux correspondant à votre périphérique __digital__.\\
Pour l'identifier vous pouvez vous aider de la liste des périphériques en listant le fichier **/proc/asound/devices** 
<code>cat /proc/asound/devices</code>. Vous y trouverez tous vos périphériques son, identifiés comme suit 
<file>
1:        : sequencer
  2: [ 0]   : control
  3: [ 0- 3]: digital audio playback
  4: [ 0- 0]: hardware dependent
  5: [ 1]   : control
  6: [ 1- 0]: digital audio playback
  7: [ 1- 0]: digital audio capture
  8: [ 1- 3]: digital audio playback
  9: [ 1- 2]: digital audio capture
 10: [ 1- 0]: hardware dependent
 11: [ 2]   : control
 12: [ 2- 3]: digital audio playback
 13: [ 2- 7]: digital audio playback
 14: [ 2- 8]: digital audio playback
 15: [ 2- 9]: digital audio playback
 16: [ 2- 0]: hardware dependent
 17: [ 2- 1]: hardware dependent
 18: [ 2- 2]: hardware dependent
 19: [ 2- 3]: hardware dependent
 33:        : timer

</file>

Une fois trouvé le bon périphérique, on va forcer pulseaudio à créer une entrée pour rediriger le son vers ce périphérique.Avec les [[:sudo|drois d'administration]], [[:tutoriel:comment_modifier_un_fichier|modifiez le fichier]] **/etc/pulse/default.pa** et à la fin rajoutez la ligne :

<file>load-module module-alsa-sink device=hw:2,9</file>
remplacez hw:2,9 par les n° correspondants à votre périphérique tel que déterminé plus avant.\\
Après un redémarrage, allez dans le panneau de contrôle de son situé en haut à droite de votre écran et sélectionnez comme sortie "NVidia stéréo"

{{:son:choix_son_digital.png?400|Interface de sélection de sortie son}}

  * Merci de signaler si vous êtes concerné par ce souci : [[https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/691135|Rapport de bug Alsa]]
  * Merci à [[http://forum.ubuntu-fr.org/viewtopic.php?pid=3904283#p3904283|Exzemat]] pour ce rapport de bug corrigé.

==== Script pour que la Sortie HDMI soit sélectionné dès qu'on branche un câble HDMI dessus (Fonctionne en 18.04)====
[[https://askubuntu.com/questions/854055/switch-between-internal-and-hdmi-speakers-automatically|Verison originale]]

Si vous devez à chaque fois sélectionner la Sortie HDMI lorsque vous branchez un câble HDMI ce script est fait pour vous :


Nous allons créer un script appelé **hotplugtv**, et des applet udev.
**
Étape 1 : Création du script pour basculer entre les périphériques audio connectéson du script pour basculer entre les périphériques audio connectés**



Ouvrir un terminal :

<code>cd /usr/local/bin
sudo touch hotplugtv
sudo chmod +x hotplugtv
gksu gedit hotplugtv</code>

Quand l'editeur s'ouvre, on colle le script ci dessous :
<code>#! /bin/bash

# NAME: hotplugtv
# PATH: /usr/local/bin
# DESC: Update pulseaudio output device when HDMI TV plugged / unplugged
# CALL: called from /etc/udev/rules.d/99-monitor-hotplug.rules
# DATE: Created Nov 26, 2016.
# NOTE: logs output using log-file
# UPDT: Dec 14, 2016 - Sometimes /sys/class/drm/card0 & sometimes /sys/class/drm/card1
#       so use /sys/class/dmcard* instead.

if [[ $(cat /sys/class/drm/card*-HDMI-A-1/status | grep -Ec "^connected") -eq 1 ]]; then
#        log-file "HDMI TV connected" ~/bin/log-hotplugtv;
        /bin/sleep 2;
        export PULSE_RUNTIME_PATH="/run/user/1000/pulse/";
        sudo -u **rick** -E pacmd set-card-profile 0 output:hdmi-stereo;
else
#        log-file "HDMI TV disconnected" ~/bin/log-hotplugtv;
        export PULSE_RUNTIME_PATH="/run/user/1000/pulse/";
        sudo -u **rick** -E pacmd set-card-profile 0 output:analog-stereo;
fi

exit 0</code>

Vous devez remplacer ** **rick** ** par votre nom d'utilisateur.

Puis sauvegarder et quittez

**Étape 2 : Création des règles udev**

Les règles hotplug udev quand vous branchez et débranchez votre port HDMI. Copier les ligne suivante pour créer une une nouvelle règle : 
<code>
cd /etc/udev/rules.d
sudo cp 70-persistent-net.rules 99-hotplugtv.rules
gksu gedit 99-hotplugtv.rules
</code>

NOTE: si le fichier 70-persistent-net.rules n'existe pas dans votre répertoire, copiez n'importe quel autre fichier. Nous n'avons pas besoin du contenu du fichier, mais des même permissions.

Le fichier peut contenir du text, surligner tout et supprimer. Et coller le code ci dessous :
<code>
# NAME: 99-hotplugtv.rules
# PATH: /etc/udev/rules.d
# DESC: Update pulseaudio output device when HDMI TV plugged / unplugged
# CALL: automatically called on system events
# DATE: Created Nov 26, 2016.
# NOTE: in future may requre systemd service hooks

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/local/bin/hotplugtv"
</code>

Sauvegarder et quitter

Pour activer la règle (pas besoin de redémarrer) : 
<code>sudo udevadm control --reload-rules</code>

----
//Contributeur principal : [[:utilisateurs:Spelth]].//